# 字符串

# String 字符串
# 1.字符串是不可变的
text = "人生苦短，我用Python"
# text[0] = "狗" # 报错，'str' object does not support item assignment
print(text)

# 2.字符串索引,使用[索引值]表示
print(text[0])
print(text[1])

# 3.字符串切片，获取子字符串,包含起始索引，不包含结束索引 slices
text = "人生苦短，我用Python"
print(text[0:5])
print(text[:4])
print(text[2:6])
print(text[6:])
# 切片并不会影响原来的字符串
print(text)

# 4.更新字符串，需要创建一个新的字符串
text = "人生苦短，我用Python"
print(text[0:5] + "不用Python")

# 5.转义字符串 \n 换行 , \t Tab
text = "人生苦短\t\t我用Python"
print(text)

# 6.三重引号 ，字符串跨越多行, 包括换行符、tab 和任何其他特殊字符
text = '''
    人生苦短
            我用Python
'''
print(text)

# 7.字符串连接使用+,但是不能连接字符串和数字
a = "hello"
b = " python"
print(a + b)

# 8.字符串重复，*
text = "python"
print(text * 3)

# 9.字符串内置函数
# 9.1 upper()，lower() ，大写、小写，返回一个新的字符串
text = "Python"
print(text.upper())
print(text.lower())
print(text)

# 9.2 str(),将指定的值转换为字符串
a = 100
print(str(a) + "abc")

# 9.3 min()，返回字符串中最小字母字符
# 9.4 max(),返回字符串中最大字母字符
text = "Python"
print(max(text))
print(min(text))

# 10.格式化字符串
# 10.1 位置格式
text = '{}{}'.format('123', 'abc')
print(text)

text = '{1}{0}{1}{1}{0}'.format('123', 'abc')
print(text)

# 10.2 左对齐  <, 默认对齐方式,可省略
text = '{:<10}'.format('Hello')
print(text)

# 10.3 右对齐  >
text = '{:>10}'.format('Hello')
print(text)
text2 = '{:>10}'.format('Python')
print(text2)


# 10.4 f-string
name = 'Python'
text = f'Hello {name}'
print(text)
